package com.ExecutorsThreads;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

// static ExecutorService newCachedThreadPool() 创建一个默认的线程池
// static newFixedThreadPool(int nThreads) 创建一个指定最多线程数量的线程池
public class MyExecutorsThreads {
    public static void main(String[] args) throws InterruptedException {
//        创建一个默认线程池对象，池子中默认是空。默认最多可以容纳int类型的最大值
        ExecutorService executorService = Executors.newCachedThreadPool();
//        Executors -----  可以帮助我们创建线程池对象
//        ExecutorService ----- 可以帮助我们控制线程池

//        开启线程
        executorService.submit(() -> System.out.println(Thread.currentThread().getName() + "-----正在运行"));
//        开启线程休眠
        Thread.sleep(1000);
//        两个线程会使用同一个线程对象，因为线程一执行完后，线程池中会创建出一个线程对象，而第二个线程对象进入到线程池中发现有空闲的一个线程对象，就会使用这条空闲对象
//        如果没有空闲的对象会开辟一条新的线程对象
        executorService.submit(() -> System.out.println(Thread.currentThread().getName() + "-----正在运行"));
//        关闭线程池
        executorService.shutdown();

    }
}
